<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libCZI: libCZI::Compositors Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" async src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">libCZI
   </div>
   <div id="projectbrief">Reading CZI documents made easy</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classlib_c_z_i_1_1_compositors.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classlib_c_z_i_1_1_compositors-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">libCZI::Compositors Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Composition operations are found in this class: multi-tile compositor and multi-channel compositor.  
 <a href="classlib_c_z_i_1_1_compositors.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="lib_c_z_i___compositor_8h_source.html">libCZI_Compositor.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlib_c_z_i_1_1_compositors_1_1_channel_info.html">ChannelInfo</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlib_c_z_i_1_1_compositors_1_1_compose_single_tile_options.html">ComposeSingleTileOptions</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Options for the <a class="el" href="classlib_c_z_i_1_1_compositors.html#a8b39ab77c8b83a5a5a8a7e1773e8ad7a" title="Composes a set of tiles (which are retrieved by calling the getTiles-functor) in the following way: T...">libCZI::Compositors::ComposeSingleChannelTiles</a> function.  <a href="structlib_c_z_i_1_1_compositors_1_1_compose_single_tile_options.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlib_c_z_i_1_1_compositors_1_1_tinting_color.html">TintingColor</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This structure defines the tinting color.  <a href="structlib_c_z_i_1_1_compositors_1_1_tinting_color.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a8b39ab77c8b83a5a5a8a7e1773e8ad7a"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlib_c_z_i_1_1_compositors.html#a8b39ab77c8b83a5a5a8a7e1773e8ad7a">ComposeSingleChannelTiles</a> (std::function&lt; bool(int index, std::shared_ptr&lt; <a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a> &gt; &amp;src, int &amp;x, int &amp;y)&gt; getTiles, <a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a> *dest, int xPos, int yPos, const <a class="el" href="structlib_c_z_i_1_1_compositors_1_1_compose_single_tile_options.html">ComposeSingleTileOptions</a> *pOptions)</td></tr>
<tr class="memdesc:a8b39ab77c8b83a5a5a8a7e1773e8ad7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Composes a set of tiles (which are retrieved by calling the getTiles-functor) in the following way: The destination bitmap is taken to be positioned at (xPos,yPos) - which specifies the top-left corner. The tiles (retrieved from the functor) are positioned at the coordinate as reported by the functor-call. Then the intersection area of source and destination is copied to the destination bitmap. If the intersection is empty, then nothing is copied.  <a href="#a8b39ab77c8b83a5a5a8a7e1773e8ad7a">More...</a><br /></td></tr>
<tr class="separator:a8b39ab77c8b83a5a5a8a7e1773e8ad7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9be96d1b2b2e48c60c4dbf967e593c1"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlib_c_z_i_1_1_compositors.html#ab9be96d1b2b2e48c60c4dbf967e593c1">ComposeMultiChannel_Bgr24</a> (<a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a> *dest, int channelCount, <a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a> *const *srcBitmaps, const <a class="el" href="structlib_c_z_i_1_1_compositors_1_1_channel_info.html">ChannelInfo</a> *channelInfos)</td></tr>
<tr class="separator:ab9be96d1b2b2e48c60c4dbf967e593c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cdaf16fcd6a53e5bfe9799e9ebacb49"><td class="memItemLeft" align="right" valign="top">static std::shared_ptr&lt; <a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">IBitmapData</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlib_c_z_i_1_1_compositors.html#a9cdaf16fcd6a53e5bfe9799e9ebacb49">ComposeMultiChannel_Bgr24</a> (int channelCount, <a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a> *const *srcBitmaps, const <a class="el" href="structlib_c_z_i_1_1_compositors_1_1_channel_info.html">ChannelInfo</a> *channelInfos)</td></tr>
<tr class="separator:a9cdaf16fcd6a53e5bfe9799e9ebacb49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a864b76a31ca73d8d6303120bf09b2370"><td class="memItemLeft" align="right" valign="top">static std::shared_ptr&lt; <a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">IBitmapData</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlib_c_z_i_1_1_compositors.html#a864b76a31ca73d8d6303120bf09b2370">ComposeMultiChannel_Bgr24</a> (int channelCount, std::vector&lt; std::shared_ptr&lt; <a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a> &gt;&gt;::iterator srcBitmapsIterator, const <a class="el" href="structlib_c_z_i_1_1_compositors_1_1_channel_info.html">ChannelInfo</a> *channelInfos)</td></tr>
<tr class="separator:a864b76a31ca73d8d6303120bf09b2370"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Composition operations are found in this class: multi-tile compositor and multi-channel compositor. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ab9be96d1b2b2e48c60c4dbf967e593c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab9be96d1b2b2e48c60c4dbf967e593c1">&#9670;&nbsp;</a></span>ComposeMultiChannel_Bgr24() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void libCZI::Compositors::ComposeMultiChannel_Bgr24 </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a> *&#160;</td>
          <td class="paramname"><em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>channelCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a> *const *&#160;</td>
          <td class="paramname"><em>srcBitmaps</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structlib_c_z_i_1_1_compositors_1_1_channel_info.html">ChannelInfo</a> *&#160;</td>
          <td class="paramname"><em>channelInfos</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Create the multi-channel-composite - applying tinting or gradation to the specified bitmaps and write the result to the specified destination bitmap. All source bitmaps must have same width and height, and the destination bitmap also has to have this same width/height. The pixeltype of the destination bitmap must be Bgr24.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">dest</td><td>The destination bitmap - must have same width/height as the source bitmaps and must be Bgr24. </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">channelCount</td><td>The number of channels. </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">srcBitmaps</td><td>An array of source bitmaps. The array must contain as many elements as specified by <code>channelCount</code>. </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">channelInfos</td><td>An array of <code>channelInfo</code> for the source channels. The array must contain as many elements as specified by <code>channelCount</code>. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a9cdaf16fcd6a53e5bfe9799e9ebacb49"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9cdaf16fcd6a53e5bfe9799e9ebacb49">&#9670;&nbsp;</a></span>ComposeMultiChannel_Bgr24() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static std::shared_ptr&lt;<a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">IBitmapData</a>&gt; libCZI::Compositors::ComposeMultiChannel_Bgr24 </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>channelCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a> *const *&#160;</td>
          <td class="paramname"><em>srcBitmaps</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structlib_c_z_i_1_1_compositors_1_1_channel_info.html">ChannelInfo</a> *&#160;</td>
          <td class="paramname"><em>channelInfos</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Create the multi-channel-composite - applying tinting or gradation to the specified bitmaps and write the result to a newly allocated destination bitmap. All source bitmaps must have same width and height, and the destination bitmap will also have this same width/height. The pixeltype of the destination bitmap will be Bgr24.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">channelCount</td><td>The number of channels. </td></tr>
    <tr><td class="paramname">srcBitmaps</td><td>An array of source bitmaps. The array must contain as many elements as specified by <code>channelCount</code>. </td></tr>
    <tr><td class="paramname">channelInfos</td><td>An array of <code>channelInfo</code> for the source channels. The array must contain as many elements as specified by <code>channelCount</code>. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a864b76a31ca73d8d6303120bf09b2370"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a864b76a31ca73d8d6303120bf09b2370">&#9670;&nbsp;</a></span>ComposeMultiChannel_Bgr24() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static std::shared_ptr&lt;<a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">IBitmapData</a>&gt; libCZI::Compositors::ComposeMultiChannel_Bgr24 </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>channelCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; std::shared_ptr&lt; <a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a> &gt;&gt;::iterator&#160;</td>
          <td class="paramname"><em>srcBitmapsIterator</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structlib_c_z_i_1_1_compositors_1_1_channel_info.html">ChannelInfo</a> *&#160;</td>
          <td class="paramname"><em>channelInfos</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Create the multi-channel-composite - applying tinting or gradation to the specified bitmaps and write the result to the specified destination bitmap. All source bitmaps must have same width and height, and the destination bitmap also has to have this same width/height. The pixeltype of the destination bitmap must be Bgr24.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">channelCount</td><td>Number of channels. </td></tr>
    <tr><td class="paramname">srcBitmapsIterator</td><td>Source bitmaps iterator. </td></tr>
    <tr><td class="paramname">channelInfos</td><td>An array of <code>channelInfo</code> for the source channels. The array must contain as many elements as specified by <code>channelCount</code>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A std::shared_ptr&lt;<a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">IBitmapData</a>&gt; </dd></dl>

</div>
</div>
<a id="a8b39ab77c8b83a5a5a8a7e1773e8ad7a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b39ab77c8b83a5a5a8a7e1773e8ad7a">&#9670;&nbsp;</a></span>ComposeSingleChannelTiles()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void libCZI::Compositors::ComposeSingleChannelTiles </td>
          <td>(</td>
          <td class="paramtype">std::function&lt; bool(int index, std::shared_ptr&lt; <a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a> &gt; &amp;src, int &amp;x, int &amp;y)&gt;&#160;</td>
          <td class="paramname"><em>getTiles</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a> *&#160;</td>
          <td class="paramname"><em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>xPos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>yPos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structlib_c_z_i_1_1_compositors_1_1_compose_single_tile_options.html">ComposeSingleTileOptions</a> *&#160;</td>
          <td class="paramname"><em>pOptions</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Composes a set of tiles (which are retrieved by calling the getTiles-functor) in the following way: The destination bitmap is taken to be positioned at (xPos,yPos) - which specifies the top-left corner. The tiles (retrieved from the functor) are positioned at the coordinate as reported by the functor-call. Then the intersection area of source and destination is copied to the destination bitmap. If the intersection is empty, then nothing is copied. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">getTiles</td><td>[in] The functor which is called in order to retrieve the tiles to compose. The second and the third parameter specify the x- and y-position of this tile. We address a tile with the parameter index. If the index is out-of-range, then this functor is expected to return false. </td></tr>
    <tr><td class="paramname">dest</td><td>[in,out] The destination bitmap. </td></tr>
    <tr><td class="paramname">xPos</td><td>The x-coordinate of the top-left of the destination bitmap. </td></tr>
    <tr><td class="paramname">yPos</td><td>The y-coordinate of the top-left of the destination bitmap. </td></tr>
    <tr><td class="paramname">pOptions</td><td>Options for controlling the operation. This argument is optional (may be nullptr).</td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>libCZI/<a class="el" href="lib_c_z_i___compositor_8h_source.html">libCZI_Compositor.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespacelib_c_z_i.html">libCZI</a></li><li class="navelem"><a class="el" href="classlib_c_z_i_1_1_compositors.html">Compositors</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
  </ul>
</div>
</body>
</html>
